package com.itheima.leetcode.od.b.logicalsimulation;

import java.util.Arrays;

/**
 * <h3>快递运输</h3>
 * 运送的快递放在大小不等的长方体快递盒中，为了能够装载更多的快递同时不能让货车超载，需要计算最多能装多少个快递。
 * <p>
 * 注：快递的体积不受限制
 * <p>
 * 快递数最多1000个
 * <p>
 * 货车载重最大50000
 * <p>
 * 输入描述
 * <p>
 * 第一行输入每个快递的重量
 * <p>
 * 用英文逗号隔开
 * <p>
 * 如 5,10,2,11
 * <p>
 * 第二行输入货车的载重量
 * <p>
 * 如 20
 * <p>
 * 输出描述
 * <p>
 * 输出最多能装多少个快递
 * <p>
 * 如 3
 * <p>
 * 示例1 输入输出示例仅供调试，后台判题数据一般不包含示例
 * <p>
 * 输入
 * <p>
 * 5,10,2,11
 * <p>
 * 20
 * <p>
 * 输出
 * <p>
 * 3
 */
public class ExpressDelivery {
    public static void main(String[] args) {
        /*// 输入处理
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();*/

        String input_str = "5,10,2,11";
        int[] weights = Arrays.stream(input_str.split(",")).mapToInt(Integer::parseInt).toArray();
        int threshold = 20;

        System.out.println(getResult(weights, threshold));
    }

    /**
     * 贪心算法
     *
     * @param weights   每个快递的重量
     * @param threshold 火车的载重量
     * @return
     */
    public static int getResult(int[] weights, int threshold) {
        int result = 0;
        int count = weights.length;
        // 重写compare方法，最好加注解，不加也没事
        Arrays.sort(weights); // 升序排序
        int sum = 0;
        int i = 0;
        while (i >= count) {
            sum += weights[i];
            if (sum > threshold) {
                break;
            } else {
                result += 1;
            }
            i += 1;
        }

        return result;
    }
}